/*
 *  ConcreteNote.h
 *  SoundController0002
 *
 *  Created by jiro on 11/10/04.
 *  Copyright 2011 jiro music. All rights reserved.
 *
 */

#pragma once

#include "System0039.h"

namespace sc
{
namespace system0039
{
	class ConcreteNote : public ::sc::hs::Howl
	{
	public:

		ConcreteNote();

		ConcreteNote(
			::sc::hs::Sound::WaveType waveType1, ::sc::Note::MidiNumber midiNumber1, double nthHarmonics1, double dynamics1,
			::sc::hs::Sound::WaveType waveType2, ::sc::Note::MidiNumber midiNumber2, double nthHarmonics2, double dynamics2 );

		ConcreteNote(
			::sc::hs::Sound::WaveType waveType, double dynamics,
			::sc::Note::MidiNumber midiNumber1, double nthHarmonics1, 
			::sc::Note::MidiNumber midiNumber2, double nthHarmonics2 );

		ConcreteNote( double freqency1, double dynamics1, double freqency2, double dynamics2 );

		bool operator == ( const ConcreteNote& rhs ) const;

		bool operator != ( const ConcreteNote& rhs ) const;

		bool operator < ( const ConcreteNote& rhs ) const;

		void ToSoundElements( std::vector< const ::sc::SoundElement32* >& note1, std::vector< const ::sc::SoundElement32* >& note2 ) const;

		std::string ToString( int tabCount = 0 ) const;

	};

}
}
